package com.pearl.boot.rabbitmq;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author TangDan
 * @version 1.0
 * @since 2022/11/9
 * ### ssl相关
 *     ssl:
 *       enabled: #是否支持ssl
 *       keyStore: #指定持有SSL certificate的key store的路径
 *       keyStoreType: #key store类型 默认PKCS12
 *       keyStorePassword: #指定访问key store的密码
 *       trustStore: #指定持有SSL certificates的Trust store
 *       trustStoreType: #默认JKS
 *       trustStorePassword: #访问密码
 *       algorithm: #ssl使用的算法，例如，TLSv1.1
 *       verifyHostname: #是否开启hostname验证
 *     ### cache相关
 *     cache:
 *       channel:
 *         size: #缓存中保持的channel数量
 *         checkoutTimeout: #当缓存数量被设置时，从缓存中获取一个channel的超时时间，单位毫秒；如果为0，则总是创建一个新channel
 *       connection:
 *         mode: #连接工厂缓存模式：CHANNEL 和 CONNECTION
 *         size: #缓存的连接数，只有是CONNECTION模式时生效
 *     ### listener
 *     listener:
 *        type: #两种类型，SIMPLE，DIRECT
 *        ## simple类型
 *        simple:
 *          concurrency: #最小消费者数量
 *          maxConcurrency: #最大的消费者数量
 *          transactionSize: #指定一个事务处理的消息数量，最好是小于等于prefetch的数量
 *          missingQueuesFatal: #是否停止容器当容器中的队列不可用
 *          ## 与direct相同配置部分
 *          autoStartup: #是否自动启动容器
 *          acknowledgeMode: #表示消息确认方式，其有三种配置方式，分别是none、manual和auto；默认auto
 *          prefetch: #指定一个请求能处理多少个消息，如果有事务的话，必须大于等于transaction数量
 *          defaultRequeueRejected: #决定被拒绝的消息是否重新入队；默认是true（与参数acknowledge-mode有关系）
 *          idleEventInterval: #container events发布频率，单位ms
 *          ##重试机制
 *          retry:
 *            stateless: #有无状态
 *            enabled:  #是否开启
 *            maxAttempts: #最大重试次数,默认3
 *            initialInterval: #重试间隔
 *            multiplier: #对于上一次重试的乘数
 *            maxInterval: #最大重试时间间隔
 *        direct:
 *          consumersPerQueue: #每个队列消费者数量
 *          missingQueuesFatal:
 *          #...其余配置看上方公共配置
 *      ## template相关
 *      template:
 *        mandatory: #是否启用强制信息；默认false
 *        receiveTimeout: #`receive()`接收方法超时时间
 *        replyTimeout: #`sendAndReceive()`超时时间
 *        exchange: #默认的交换机
 *        routingKey: #默认的路由
 *        defaultReceiveQueue: #默认的接收队列
 *        ## retry重试相关
 *        retry:
 *          enabled: #是否开启
 *          maxAttempts: #最大重试次数
 *          initialInterval: #重试间隔
 *          multiplier: #失败间隔乘数
 *          maxInterval: #最大间隔
 */
@SpringBootApplication
public class AAA {

    public static void main(String[] args) {
        SpringApplication.run(AAA.class,args);
    }
}
